/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Biblioteca;

import java.util.List;

/**
 * Esta clase en java define las caracteristicas y atributos
 * para las areas de conocimiento de un libro.
 *
 * @author sebaxtian
 * Archivo: Area.java
 * @version 1.0
 * Fecha: dom abr 11 00:47:04 COT 2010
 */


public class Area {

    //Atributos de clase
    private int codigoArea;
    private int codigoAreaPadre;
    private String nombre;
    private String descripcion;
    private List<Area> subAreas;

    /**
     * Crea un area de conocimiento con atributos nulos.
     */
    public Area() {
        this.codigoArea = -1;
        this.codigoAreaPadre = -1;
        this.nombre = null;
        this.descripcion = null;
        this.subAreas = null;
    }

    /**
     * Crea un area de conocimiento con atributos definidos como argumentos.
     *
     * @param codigoArea
     * @param nombre
     * @param descripcion
     */
    public Area(int codigoArea, String nombre, String descripcion) {
        this.codigoArea = codigoArea;
        this.codigoAreaPadre = -1;
        this.nombre = nombre;
        this.descripcion = descripcion;
        this.subAreas = null;
    }

    /**
     * Crea un area de conocimiento con atributos definidos como argumentos.
     * 
     * @param codigoArea
     * @param codigoAreaPadre
     * @param nombre
     * @param descripcion
     */
    public Area(int codigoArea, int codigoAreaPadre, String nombre, String descripcion) {
        this.codigoArea = codigoArea;
        this.codigoAreaPadre = codigoAreaPadre;
        this.nombre = nombre;
        this.descripcion = descripcion;
        this.subAreas = null;
    }

    /**
     * Obtiene el codigo de area de conocimiento.
     *
     * @return codigoArea
     */
    public int getCodigoArea() {
        return codigoArea;
    }

    /**
     * Cambia el codigo de area de conocimiento.
     *
     * @param codigoArea
     */
    public void setCodigoArea(int codigoArea) {
        this.codigoArea = codigoArea;
    }

    /**
     * Obtiene el nombre de area de comocimiento.
     *
     * @return nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Cambia el nombre de area de comocimiento.
     *
     * @param nombre
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * Cambia el codigo del area padre por el nuevo codigo.
     * 
     * @param codigoAreaPadre
     */
    public void setCodigoAreaPadre(int codigoAreaPadre) {
        this.codigoAreaPadre = codigoAreaPadre;
    }

    /**
     * Obtiene el codigo del area padre,
     * si no tiene area padre el valor del codigo
     * es -1
     *
     * @return codigoAreaPadre
     */
    public int getCodigoAreaPadre() {
        return codigoAreaPadre;
    }

    /**
     * Obtiene la descripcion del area de conocimiento.
     *
     * @return descripcion
     */
    public String getDescripcion() {
        return descripcion;
    }

    /**
     * Cambia la descripcion del area de conocimiento.
     *
     * @param descripcion
     */
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    /**
     * Obtiene la lista de subareas de conocimiento.
     *
     * @return subAreas
     */
    public List<Area> getSubAreas() {
        return subAreas;
    }

    /**
     * Cambia la lista de subareas de conocimiento.
     *
     * @param subAreas
     */
    public void setSubAreas(List<Area> subAreas) {
        this.subAreas = subAreas;
    }

}
